﻿/**
 *    Copyright 2012 Yohan Courbe
 *
 *  Licensed under the Apache License, Version 2.0 (the "License 
 *  you may not use this file except in compliance with the License.
 *  You may obtain a copy of the License at
 *  
 *      http://www.apache.org/licenses/LICENSE-2.0
 *      
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 */

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using SharpPcap;
using System.Net;

namespace NetworkAnalyzer
{
    class NetworkDevice
    {
        public ICaptureDevice CaptureDevice { get; private set; }
        public IPAddress IPAddress { get; private set; }
        public string Name { get; private set; }
        public IPAddress GatewayAddress { get; private set; }
        public IPAddress Netmask { get; private set; }

        public NetworkDevice(ICaptureDevice dev)
        {
            CaptureDevice = dev;
            var deviceInfo = dev.ToString();

            foreach (var line in deviceInfo.Split('\n'))
            {
                var lineSplited = line.Split(':');

                if (lineSplited.Length != 2) continue;
                var field = lineSplited[0].Trim();
                var value = lineSplited[1].Trim();

                switch (field)
                {
                    case "Addr":
                        IPAddress = IPAddress.Parse(value);
                        break;
                    case "FriendlyName":
                        Name = value;
                        break;
                    case "GatewayAddress":
                        try { GatewayAddress = IPAddress.Parse(value); }
                        catch (Exception) { }
                        break;
                    case "Netmask":
                        try { Netmask = IPAddress.Parse(value); }
                        catch (Exception) { }
                        break;
                }
            }
        }

        public override string ToString()
        {
            return this.Name;
        }

        
    }
}
